package com.fr.data.condition;

import com.fr.base.XMLable;
import com.fr.base.core.json.JSONObject;
import com.fr.data.TableData;
import com.fr.report.script.Calculator;

public abstract interface Condition extends XMLable
{
  public static final String XML_TAG = "Condition";

  public abstract boolean eval(Object paramObject, Calculator paramCalculator);

  public abstract int[] evalTableData(TableData paramTableData, int[] paramArrayOfInt, int paramInt, Calculator paramCalculator);

  public abstract String[] getDependence();

  public abstract Object clone()
    throws CloneNotSupportedException;

  public abstract JSONObject createJSON()
    throws Exception;

  public abstract void parseJSON(JSONObject paramJSONObject)
    throws Exception;
}